d4db75c428c70eb840d5948a388e73d5942154b9,src/org/pentaho/di/trans/steps/update/Update.java,Update,processRow,#StepMetaInterface#StepDataInterface#,199
Before Change
// lookup the values!
if (log.isDetailed()) logDetailed(BaseMessages.getString(PKG, "Update.Log.CheckingRow")+getInputRowMeta().getString(r)); //$NON-NLS-1$
data.keynrs = new int[meta.getKeyStream().length];
data.keynrs2 = new int[meta.getKeyStream().length];
for (int i=0;i<meta.getKeyStream().length;i++)
{
data.keynrs[i]=getInputRowMeta().indexOfValue(meta.getKeyStream()[i]);
if (data.keynrs[i]<0 && // couldn't find field!
!"IS NULL".equalsIgnoreCase(meta.getKeyCondition()[i]) && // No field needed! //$NON-NLS-1$
!"IS NOT NULL".equalsIgnoreCase(meta.getKeyCondition()[i]) // No field needed! //$NON-NLS-1$
After Change
// lookup the values!
if (log.isDetailed()) logDetailed(BaseMessages.getString(PKG, "Update.Log.CheckingRow")+getInputRowMeta().getString(r)); //$NON-NLS-1$
ArrayList<Integer> keynrs = new ArrayList<Integer>(meta.getKeyStream().length);
ArrayList<Integer> keynrs2 = new ArrayList<Integer>(meta.getKeyStream().length);
for (int i=0;i<meta.getKeyStream().length;i++)
{
int keynr=getInputRowMeta().indexOfValue(meta.getKeyStream()[i]);
if (keynr<0 && // couldn't find field!
!"IS NULL".equalsIgnoreCase(meta.getKeyCondition()[i]) && // No field needed! //$NON-NLS-1$
!"IS NOT NULL".equalsIgnoreCase(meta.getKeyCondition()[i]) // No field needed! //$NON-NLS-1$
)
{
throw new KettleStepException(BaseMessages.getString(PKG, "Update.Exception.FieldRequired",meta.getKeyStream()[i])); //$NON-NLS-1$ //$NON-NLS-2$
}
keynrs.add(keynr);
// this operator needs two bindings
if ("= ~NULL".equalsIgnoreCase(meta.getKeyCondition()[i])){
keynrs.add(keynr);
keynrs2.add(-1);
}
int keynr2=getInputRowMeta().indexOfValue(meta.getKeyStream2()[i]);
if (keynr2<0 && // couldn't find field!
"BETWEEN".equalsIgnoreCase(meta.getKeyCondition()[i]) // 2 fields needed! //$NON-NLS-1$
)
{
throw new KettleStepException(BaseMessages.getString(PKG, "Update.Exception.FieldRequired",meta.getKeyStream2()[i])); //$NON-NLS-1$ //$NON-NLS-2$
}
keynrs2.add(keynr2);
if (log.isDebug()) logDebug(BaseMessages.getString(PKG, "Update.Log.FieldHasDataNumbers",meta.getKeyStream()[i])+""+keynrs.get(keynrs.size()-1)); //$NON-NLS-1$ //$NON-NLS-2$
}
data.keynrs = ArrayUtils.toPrimitive(keynrs.toArray(new Integer[0]));
data.keynrs2 = ArrayUtils.toPrimitive(keynrs2.toArray(new Integer[0]));
// Cache the position of the compare fields in Row row